tools: Add xl python bindings for cpumap
authorJuergen Gross <juergen.gross@ts.fujitsu.com>
Tue, 23 Nov 2010 19:35:09 +0000 (19:35 +0000)
committerJuergen Gross <juergen.gross@ts.fujitsu.com>
Tue, 23 Nov 2010 19:35:09 +0000 (19:35 +0000)
Signed-off-by: juergen.gross@ts.fujitsu.com
tools/python/xen/lowlevel/xl/xl.c

index 7ab66f4f5200fd2425a050ad02f9187057122c63..183ffe065eff47064e93eeb564b9fbc142b24aea 100644 (file)
@@ -214,7 +214,14 @@ int attrib__libxl_cpuid_policy_list_set(PyObject *v, libxl_cpuid_policy_list *pp
 
 int attrib__libxl_cpumap_set(PyObject *v, libxl_cpumap *pptr)
 {
-    return -1;
+    int i;
+    long cpu;
+
+    for (i = 0; i < PyList_Size(v); i++) {
+        cpu = PyInt_AsLong(PyList_GetItem(v, i));
+        libxl_cpumap_set(pptr, cpu);
+    }
+    return 0;
 }
 
 int attrib__libxl_domain_build_state_ptr_set(PyObject *v, libxl_domain_build_state **pptr)
@@ -264,7 +271,19 @@ PyObject *attrib__libxl_cpuid_policy_list_get(libxl_cpuid_policy_list *pptr)
 
 PyObject *attrib__libxl_cpumap_get(libxl_cpumap *pptr)
 {
-    return NULL;
+    PyObject *cpulist = NULL;
+    int i;
+
+    cpulist = PyList_New(0);
+    libxl_for_each_cpu(i, *pptr) {
+        if ( libxl_cpumap_test(pptr, i) ) {
+            PyObject* pyint = PyInt_FromLong(i);
+
+            PyList_Append(cpulist, pyint);
+            Py_DECREF(pyint);
+        }
+    }
+    return cpulist;
 }
 
 PyObject *attrib__libxl_domain_build_state_ptr_get(libxl_domain_build_state **pptr)